#ifndef __T_GAME_DATA_BASE__INTERFACE__
#define __T_GAME_DATA_BASE__INTERFACE__

#include "Entry/LibExport.h"

//
//	Data Interface
//	Which is a most use data cluster interface used in my design
//
class TDATA_API IData
{
public:
	virtual ~IData(){;}

	//	
	//	ID
	//
	virtual void	setID(int nID)	= 0;
	virtual int		getID()const	= 0;

	//
	//	Group ID
	//
	virtual void	setGroupID(int nGrpID)	= 0;
	virtual int		getGroupID()const		= 0;	

	//
	//	Data X, Y, Z
	//	Which is used most frequently
	//
	virtual void	setDataX(int x) = 0;
	virtual void	setDataY(int y) = 0;
	virtual void	setDataZ(int z) = 0;

	virtual int		getDataX()const = 0;
	virtual int		getDataY()const = 0;
	virtual int		getDataZ()const = 0;

	//
	//	Data Extension, more data
	//
	virtual	int		getData(const short& nIdx, int nDefault = 0)const	= 0;
	virtual void	setData(const short& nIdx, int nValue)				= 0;

	//
	//	Data Extension, more data, string as key
	//
	virtual	int		getData(const char* szKey, int nDefault = 0)const	= 0;
	virtual void	setData(const char* szKey, int nValue)				= 0;

	//
	//	Data Extension, more data, string as key, string as data
	//
	virtual	int		getData(const char* szKey, string& sValue)const			= 0;
	virtual void	setData(const char* szKey, const string& sValue)		= 0;
};

#endif
